Skip to content

fix(ci): automate verified PyPI releases; keep ClawHub manual - #38

Merged
fancyboi999 merged 2 commits into
mainfrom
fix/automatic-pypi-release
Oct 10, 2026
Merged

fancyboi999 merged 2 commits into
mainfrom
fix/automatic-pypi-release

Conversation

@fancyboi999

Copy link
Copy Markdown
Owner

改动描述

业务 PR 合入 main 后,程序维护发布 PR、同步版本和 CHANGELOG,验证后自动合并、生成 tag/GitHub Release并触发 PyPI。ClawHub 保持手动,不配置其 token 或上传步骤。

动机 / 关联 issue

现有 publisher 只在手工 tag/dispatch 后构建上传,缺少自动版本准备及相同提交的 CI 门槛。PR #36 的功能修复、PR #37 的 0.5.0 与 ClawHub 0.5.0 均已发布;这里实现后续 PyPI 自动化。

release-please 管理版本语义和多处元数据。自动合并只接受本仓库 Actions 生成的发布 PR,冻结并验证 SHA、main 基线、版本字段范围;候选更新或 main 前进时中止。GITHUB_TOKEN 创建的 tag 不依赖 push 级联,而是显式 dispatch 原 publish.yml,以保留现有 PyPI Trusted Publisher 身份。无需个人访问 token。

publisher 只接受匹配元数据且属于 main 的稳定 tag;完整 CI 后检查已存在工件哈希,用 OIDC 上传,并由另一个无 id-token 权限的 job 从 PyPI 安装验证 CLI/MCP。相同字节才允许跳过已上传文件,冲突拒绝。

改动类型

  • bug 修复
  • 新功能
  • 重构(不改变外部行为)
  • 文档
  • CI / 构建

验证

  • pytest:238 passed;ruff 无告警
  • npm test:3 passed;打包与版本契约通过
  • actionlint:三个 workflow 通过
  • 敏感标识扫描和 git diff --check 通过
  • release-please 17.11.2 真实 updater 将隔离候选从 0.5.0 同步到 0.5.1,保留 MCP pin 前缀、同步安装文档,运行模块未改写
  • 真实本机 Git 候选:仅版本变更接受,npm scripts 的非版本变更拒绝;错误 tag 拒绝
  • 对真实 PyPI 0.5.0 验证工作流原始 dist 哈希,CLI 0.5.0 与 MCP 17 工具通过;隔离工件损坏立即拒绝
python scripts/release_metadata.py --check
Release metadata verified: 0.5.0

python scripts/verify_pypi_release.py 0.5.0 --dist <通过发布检查的dist>
artifact_hashes_match=true, cli_version_verified=true, mcp_handshake=true, tool_count=17

未新增单元测试或 mock;负向实验仅在任务目录,未提交。GitHub Actions 实际生成/合并发布 PR、dispatch 及新的 PyPI 发布将在本 PR 合入后验证,当前不宣称已跑通。仓库需允许 Actions 创建 PR,默认 workflow 权限仍保持 read,写权限只在对应 job 声明;不绕过 branch protection。ClawHub 新版仍按 CONTRIBUTING.md 手工验收和发布。

合规

  • 未提交 cookie、token、账号会话数据或私有环境路径
  • 不增加商品/消息写操作、不绕过平台风控

@fancyboi999
fancyboi999 merged commit 4349e5e into main Oct 10, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant